export default {
    addXAsync(context, payload) {  // context => {commit,dispatch,state,getters,rootState,rootGetters}
        console.log("addXAsync被调用");
        console.log("context", context); // {commit,dispatch,state,getters,rootState,rootGetters}
        console.log("payload", payload);

        var {commit} = context;

        // 默认返回 pending状态的promise实例  ->  2s后会变为fulfilled
        return new Promise(function(resolve){  
            setTimeout(() => {
                commit("addX", payload);
                resolve();
            }, 2000);
        })
        
    },
    // 和当前store对象有相同属性和方法的对象
    addXAndA: function (context, payload ) {
        console.log("addXAndA被调用");
        console.log("context",context);
        console.log("payload",payload);

        var {commit} = context;   // {commit,dispatch,state,getters,rootState,rootGetters}
        commit("addX",11111);  // 子模块的commit默认查找模块自身的mutations方法
        commit("addA",22222,{root:true});  // 在带命名空间的模块内访问全局内容(全局的mutations和actions中的方法  -> 加第三参数 {root:true})
    },

    // 如果namespaced:true, 子模块内的actions方法默认是局部的 demo/addXYiBu
    // 如何配置了root:true => 就可以实现在子模块内注册全局方法
    addXYiBu:{
        root:true,
        handler:function(context, payload) {  // context => {commit,dispatch,state,getters}
            console.log("addXYiBu被调用");
            console.log("context", context); // {commit,dispatch,state,getters}
            console.log("payload", payload);
    
            var {commit} = context;
    
            // 默认返回 pending状态的promise实例  ->  2s后会变为fulfilled
            return new Promise(function(resolve){  
                setTimeout(() => {
                    commit("addX", payload);
                    resolve();
                }, 2000);
            })
            
        }
    },
}